package integracion;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import java.sql.Statement;
import java.util.ArrayList;

import share.Rol;

public class RolDAO
{

	private final Connection conn;

	public RolDAO(Connection conn)
	{
		this.conn = conn;
	}

	public boolean insert(Rol rol)
	{
		Statement ps;

		try
		{
			String consulta="INSERT INTO rol VALUES ("+"null,'"+rol.getNombre()+"','"+rol.getDescripcion()+"');";
			System.out.println(consulta);
			ps = conn.createStatement();
			ps.executeUpdate(consulta);
		}
		catch (SQLException e)
		{

			e.printStackTrace();
		}

		return false;
	}

	public Rol getRolByNick(String nick)
	{
		PreparedStatement ps;
		try
		{
			ps = conn.prepareStatement("select * from rol where nombre=?");
			ps.setString(1, nick);

			ResultSet rs = ps.executeQuery();
			if(rs.next())
			{
				Rol rol = new Rol();
				rol.setCodigo(rs.getInt("codigo"));
				rol.setNombre(rs.getString("nombre"));
				rol.setDescripcion(rs.getString("descripcion"));
				return rol;
			}
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		return null;

	}

	public Rol getRolById(int id)
	{
		PreparedStatement ps;
		try
		{
			ps = conn.prepareStatement("select * from eje where codigo=?");
			ps.setInt(1, id);

			ResultSet rs = ps.executeQuery();
			if(rs.next())
			{

				Rol rol = new Rol();
				rol.setCodigo(rs.getInt("codigo"));
				rol.setNombre(rs.getString("nombre"));
				rol.setDescripcion(rs.getString("descripcion"));
				return rol;
			}
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		return null;

	}

	public boolean eliminarRolId(int id)
	{
		PreparedStatement ps;
		try
		{
			ps = conn.prepareStatement("delete from eje where codigo="+id+";");
			ps.executeUpdate();
			return true;

		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		return false;

	}

	public void modificar(Rol rol)
	{
		Statement ps;

		try
		{	String consulta="UPDATE eje set nombre= '"+rol.getNombre()+"',descripcion= '"+rol.getDescripcion()+"' where codigo= "+rol.getCodigo()+";";
			System.out.println(consulta);
			ps = conn.createStatement();
			ps.executeUpdate(consulta);
		}
		catch (SQLException e)
		{

			e.printStackTrace();
		}

		return;
	}

	public ArrayList<Rol> getLista()
	{
		ResultSet rs;
		try
		{
			rs = conn.createStatement().executeQuery("select * from rol");
			ArrayList<Rol> lista = new ArrayList<Rol>();
			while(rs.next())
			{

				Rol rol = new Rol();
				rol.setCodigo(rs.getInt("codigo"));
				rol.setNombre(rs.getString("nombre"));
				rol.setDescripcion(rs.getString("descripcion"));

				lista.add(rol);
			}
			return lista;
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		return null;
	}

	public ArrayList<Rol> getListaComponente()
	{
		ResultSet rs;
		try
		{
			rs = conn.createStatement().executeQuery("select * from rol where codigo= 3 or codigo=4;");
			ArrayList<Rol> lista = new ArrayList<Rol>();
			while(rs.next())
			{

				Rol rol = new Rol();
				rol.setCodigo(rs.getInt("codigo"));
				rol.setNombre(rs.getString("nombre"));
				rol.setDescripcion(rs.getString("descripcion"));

				lista.add(rol);
			}
			return lista;
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		return null;
	}
}
